From 6f7ff73d5777b3aec9b7fdadfe0869ca1df280aa Mon Sep 17 00:00:00 2001 From: Tim Deegan Date: Wed, 20 Dec 2006 11:59:54 +0000 Subject: [PATCH] [HVM] Add Etherboot option ROM, for network-booting HVM guests. Signed-off-by: Tim Deegan --- tools/examples/xmexample.hvm | 4 ++-- tools/firmware/etherboot/README | 7 ++++++ tools/firmware/etherboot/eb-rtl8139.zrom | Bin 0 -> 32768 bytes tools/firmware/hvmloader/Makefile | 3 ++- tools/firmware/hvmloader/hvmloader.c | 29 +++++++++++++++++++++++ 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 tools/firmware/etherboot/README create mode 100644 tools/firmware/etherboot/eb-rtl8139.zrom diff --git a/tools/examples/xmexample.hvm b/tools/examples/xmexample.hvm index 143252e65b..33ce3203d3 100644 --- a/tools/examples/xmexample.hvm +++ b/tools/examples/xmexample.hvm @@ -29,7 +29,7 @@ memory = 128 # Shadow pagetable memory for the domain, in MB. # Should be at least 2KB per MB of domain memory, plus a few MB per vcpu. -shadow_memory = 8 +# shadow_memory = 8 # A name for your domain. All domains must have different names. name = "ExampleHVMDomain" @@ -116,7 +116,7 @@ disk = [ 'file:/var/images/min-el3-i386.img,hda,w', ',hdc:cdrom,r' ] device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm' #----------------------------------------------------------------------------- -# boot on floppy (a), hard disk (c) or CD-ROM (d) +# boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d) # default: hard disk, cd-rom, floppy #boot="cda" diff --git a/tools/firmware/etherboot/README b/tools/firmware/etherboot/README new file mode 100644 index 0000000000..c520699b5c --- /dev/null +++ b/tools/firmware/etherboot/README @@ -0,0 +1,7 @@ + +This is an Etherboot option ROM for the rtl8139 NIC. It has a few +non-standard settings, just to do with timeouts and when to give up. + +Rom-o-matic.net will provide this image at the following URL: + +http://rom-o-matic.net/5.4.2/build.php?version=5.4.2&F=ignore&nic=rtl8139%3Artl8139+--+%5B0x10ec%2C0x8139%5D&ofmt=Binary+ROM+Image%28.zrom%29&arch=i386&ASK_BOOT=-1&BOOT_FIRST=BOOT_NIC&BOOT_SECOND=BOOT_NOTHING&BOOT_THIRD=BOOT_NOTHING&BOOT_INDEX=0&STATIC_CLIENT_IP=&STATIC_SUBNET_MASK=&STATIC_SERVER_IP=&STATIC_GATEWAY_IP=&STATIC_BOOTFILE=&EXIT_ON_FILE_LOAD_ERROR=on&DHCP_CLIENT_ID=&DHCP_CLIENT_ID_LEN=&DHCP_CLIENT_ID_TYPE=&DHCP_USER_CLASS=&DHCP_USER_CLASS_LEN=&ALLOW_ONLY_ENCAPSULATED=on&DEFAULT_BOOTFILE=&CONGESTED=on&BACKOFF_LIMIT=7&TIMEOUT=180&TRY_FLOPPY_FIRST=0&EXIT_IF_NO_OFFER=on&TAGGED_IMAGE=on&ELF_IMAGE=on&PXE_IMAGE=on&DOWNLOAD_PROTO_TFTP=on&COMCONSOLE=0x3F8&CONSPEED=9600&COMPARM=0x03&PXE_EXPORT=on&CONFIG_PCI=on&CONFIG_ISA=on&BUILD_ID=&PCBIOS=on&A=Get+ROM diff --git a/tools/firmware/etherboot/eb-rtl8139.zrom b/tools/firmware/etherboot/eb-rtl8139.zrom new file mode 100644 index 0000000000000000000000000000000000000000..446b55fc57a3a27f9a81eb4da3b9ce94c0a5e048 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index 763f472987..44adaa07f9 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -51,11 +51,12 @@ hvmloader: roms.h acpi/acpi.a $(SRCS) acpi/acpi.a: $(MAKE) -C acpi -roms.h: ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin +roms.h: ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin ../etherboot/eb-rtl8139.zrom sh ./mkhex rombios ../rombios/BIOS-bochs-latest > roms.h sh ./mkhex vgabios_stdvga ../vgabios/VGABIOS-lgpl-latest.bin >> roms.h sh ./mkhex vgabios_cirrusvga ../vgabios/VGABIOS-lgpl-latest.cirrus.bin >> roms.h sh ./mkhex vmxassist ../vmxassist/vmxassist.bin >> roms.h + sh ./mkhex etherboot ../etherboot/eb-rtl8139.zrom >> roms.h .PHONY: clean clean: diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c index b7729ed85d..5e06273043 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -34,6 +34,7 @@ /* memory map */ #define HYPERCALL_PHYSICAL_ADDRESS 0x00080000 #define VGABIOS_PHYSICAL_ADDRESS 0x000C0000 +#define ETHERBOOT_PHYSICAL_ADDRESS 0x000C8000 #define VMXASSIST_PHYSICAL_ADDRESS 0x000D0000 #define ROMBIOS_PHYSICAL_ADDRESS 0x000F0000 @@ -279,6 +280,27 @@ static void pci_setup(void) } } +static +int must_load_nic(void) +{ + /* If the network card is in the boot order, load the Etherboot + * option ROM. Read the boot order bytes from CMOS and check + * if any of them are 0x4. */ + uint8_t boot_order; + + /* Read CMOS register 0x3d (boot choices 0 and 1) */ + outb(0x70, 0x3d); + boot_order = inb(0x71); + if ( (boot_order & 0xf) == 0x4 || (boot_order & 0xf0) == 0x40 ) + return 1; + /* Read CMOS register 0x38 (boot choice 2 and FDD test flag) */ + outb(0x70, 0x38); + boot_order = inb(0x71); + if ( (boot_order & 0xf0) == 0x40 ) + return 1; + return 0; +} + int main(void) { int acpi_sz; @@ -312,6 +334,13 @@ int main(void) vgabios_stdvga, sizeof(vgabios_stdvga)); } + if ( must_load_nic() ) + { + printf("Loading ETHERBOOT ...\n"); + memcpy((void *)ETHERBOOT_PHYSICAL_ADDRESS, + etherboot, sizeof(etherboot)); + } + if ( get_acpi_enabled() != 0 ) { printf("Loading ACPI ...\n"); -- 2.30.2